package com.lyf.factory;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class MyFactory {
    private Properties properties = new Properties();

    public MyFactory(){
        try {
            //在我们实例化工厂类的时候进行配置文件的读取
            InputStream resourceAsStream = MyFactory.class.getResourceAsStream("/bean.properties");
            //这个配置文件里面都是我们需要使用到的一些类信息
            properties.load(resourceAsStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //获取对象
    public Object getBean(String beanName){
        try {
            //通过beanName来获取bean的全路径名==>使用properties里面的key值来获取更多的全路径名
            String property = properties.getProperty(beanName);
            //通过全路径名获取类对象
            Class<?> aClass = Class.forName(property);
            //以类对象构造实例
            return aClass.newInstance();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;
    }
}
